#ifndef INCLUDED_SINGLETON
#define INCLUDED_SINGLETON

template <typename T>
class Singleton
{
    protected:
        Singleton ();
        ~Singleton ();

    public:
        static T * getInstance ();
        static void kill ();

    private:
        static T * m_singleton;
};

template <typename T>
T * Singleton<T>::m_singleton = NULL;

#include "singleton_definition.hpp"

#endif
